home *** CD-ROM | disk | FTP | other *** search
/ Aminet 41 / Aminet 41 (2001)(Schatztruhe)[!][Feb 2001].iso / Aminet / comm / tcp / rxsocket.lha / rxsocket / examples / echomix.rexx < prev    next >
OS/2 REXX Batch file  |  2000-11-28  |  1KB  |  48 lines

  1. /*
  2.   Mix protocols echo client.
  3.   Shows the usage of OpenConnection().
  4.   Just a simple echo client, but it wants as second argument
  5.   the string "tcp" or "udp".
  6.   To try this on localhost be sure your echo/tcp and echo/udp
  7.   services are enabled in the inetd database.
  8.   Then just write
  9.   - rx echomix localhost tcp
  10.   - rx echomix localhost udp
  11. */
  12.  
  13. l="rmh.library";if ~show("L",l) then;if ~addlib(l,0,-30) then exit
  14. if AddLibrary("rexxsupport.library","rxsocket.library")~=0 then exit
  15.  
  16. prg = ProgramName("NOEXT")
  17.  
  18. if ~RMH_ReadArgs("HOST/A,PROTO/A") then do
  19.     call PrintFault(IoErr(),prg)
  20.     exit
  21. end
  22. if parm.1.value~="tcp" & parm.1.value~="udp" then call err "PROTO must be 'tcp' or 'udp'"
  23.  
  24. sock=OpenConnection(parm.1.value,"echo",parm.0.value)
  25. if sock<0 then
  26.     select
  27.         when sock==-5 then call err "echomix: can't bind socket on port."
  28.         when sock==-4 then call err "echomix: service echo not found."
  29.         when sock==-3 then call err "echomix: service not found."
  30.         when sock==-2 then call err "echomix: host <" || parm.0.value || "> not found."
  31.         when sock==-1 then call "echomix: unable to connect <"parm.0.value":echo> (" || errno() || ")"
  32.     end
  33.  
  34. request="echo service test"
  35. if send(sock,request)~=length(REQUEST) then
  36.     call err "echomix: send error (" || errno() || ")"
  37.  
  38. len=recv(sock,"BUF",256)
  39. if len<0 then call err "echomix: recv error (" || errno() || ")"
  40.  
  41. say buf
  42. call CloseSocket(sock)
  43. exit
  44.  
  45. err:
  46. parse arg msg
  47.     say prg":" msg
  48.     exit